////////////////////////////////////////////////////////////////////
// File name: Inputclass.h
////////////////////////////////////////////////////////////////////
#pragma once


//////////////
// INCLUDES //
//////////////
#include <vector>
#include "raySDL.h"


///////////////
// NAMESPACE //
///////////////
using std::vector;


//////////
// ENUM //
//////////
enum KeyState		// ����״̬ö��
{
	StillReleased,
	JustPressed,
	JustReleased,
	StillPressed
};


/////////////
// STRUCTS //
/////////////
struct GameController
{
	SDL_Joystick* Joystick = NULL;
	SDL_Haptic* Haptic = NULL;
};


////////////////////////////////////////////////////////////////////
// Class name: InputClass
////////////////////////////////////////////////////////////////////
class InputClass
{
public:
	InputClass();
	~InputClass();

	void Clear();


	// ���̷���
	void UpdateKeyboard();	// ���¼���״̬

	KeyState GetKeyState(SDL_Scancode keyCode);		// ���ؼ���״̬


	// �ֱ�����
	void InitJoystick();		// ��ʼ���ֱ�
	void ShutdownJoystick();	// �ر��ֱ�
	void ShockJoystick(int id, float strength = 1, Uint32 time = 100);


private:
	// ��������
	Uint8 m_currentKeyStates[256];
	Uint8 m_lastKeyStates[256];

	// �ֱ�����
	vector<GameController> m_GameController;
	int m_JoystickQuan;		// �ֱ�������
};